#pragma once

namespace Alice
{

/*
    计时器
*/
class Timer
{
public:
    Timer() 
        : m_is_first_tick(true),
          m_previous_time(0) {}

    /*
        更新一次时间
    */
    void Clock();

    /*
        重设定时器
    */
    void Reset();

    /*
        获取当前的时间增量
        即当前帧与上一帧的间隔时间
    */
    double GetDeltaTime();

    /*
        得到计时器存活的总时间
    */
    double GetTotalTime();

    /*
        获取当前时间
    */
    double CurrentTime();

private:
    bool m_is_first_tick;
    // 开始计时的时间
    double m_start_time;
    // 当前帧的时间
    double m_current_time;
    // 上一帧的时间
    double m_previous_time;
    // 当前帧与上一帧之间的间隔时间
    double m_delta_time;
};

} // namespace Alice
